﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Devart.Data.PostgreSql;

namespace Sistema_financiero.Entidades
{
    public class Localidad
    {
        public int ID { get; set; }
        public string Descripcion { get; set; }
        public int Id_departamento { get; set; }
        public string Departamento { get; set; }
        public int Id_provincia { get; set; }
        public string Provincia { get; set; }
        
        public static List<Localidad> Obtener_Localidades (int departamento_seleccionado)
        {
            List<Localidad> lista = new List<Localidad>();
            using (PgSqlConnection conexion = new PgSqlConnection(frm_Menu.conexion))
            {
                conexion.Unicode = true;
                conexion.Open();
                string sql = String.Format("SELECT * FROM obtener_localidades({0})", departamento_seleccionado);
                PgSqlCommand comando = new PgSqlCommand(sql, conexion);
                PgSqlDataReader reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    lista.Add(Cargar_Localidad(reader));
                }
                conexion.Close();
            }
            return lista;

        }

        private static Localidad Cargar_Localidad(IDataReader reader)
        {
            Localidad item = new Localidad();
            item.ID = Convert.ToInt32(reader[0]);
            item.Descripcion = Convert.ToString(reader[1]);
            return item;
        }

        public static List<Localidad> Obtener_Todas_Localidades()
        {
            List<Localidad> lista = new List<Localidad>();
            using (PgSqlConnection conexion = new PgSqlConnection(frm_Menu.conexion))
            {
                conexion.Unicode = true;
                conexion.Open();
                string sql = "SELECT * FROM obtener_todas_localidades";
                PgSqlCommand comando = new PgSqlCommand(sql, conexion);
                PgSqlDataReader reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    lista.Add(Cargar_Todas_Localidades(reader));
                }
                conexion.Close();
            }
            return lista;
        }

        
        private static Localidad Cargar_Todas_Localidades(IDataReader reader)
        {
            Localidad item = new Localidad();
            item.ID = Convert.ToInt32(reader[0]);
            item.Descripcion = Convert.ToString(reader[1]);
            item.Id_departamento = Convert.ToInt32(reader[2]);
            item.Departamento = Convert.ToString(reader[3]);
            item.Id_provincia = Convert.ToInt32(reader[4]);
            item.Provincia = Convert.ToString(reader[5]);
            return item;
        }
    }
}
